#include <vector>
namespace CONTRALIGN{
/////////////////////////////////////////////////////////////////
// GetDefaultProteinValues()
//
// Retrieve default parameter values.
/////////////////////////////////////////////////////////////////

template<class RealT>
std::vector<RealT> GetDefaultProteinValues()
{
    RealT values[] =
    {
        0.3043604012,        // match_AA
        -0.0145286035,       // match_AR
        -0.2453692487,       // match_AN
        -0.0822999344,       // match_AD
        0.1455955568,        // match_AC
        0.1440421744,        // match_AQ
        -0.0215294034,       // match_AE
        -0.3026981633,       // match_AG
        -0.0509165797,       // match_AH
        0.1379386350,        // match_AI
        0.1414941014,        // match_AL
        -0.0170707863,       // match_AK
        0.3092061877,        // match_AM
        0.0222459192,        // match_AF
        -0.3074997757,       // match_AP
        -0.2007151669,       // match_AS
        -0.3062491281,       // match_AT
        0.0615728422,        // match_AW
        0.1082298723,        // match_AY
        0.2531953330,        // match_AV
        0.0278508263,        // match_AB
        0.0000014437,        // match_AZ
        -0.0261465309,       // match_AX
        0.4522868651,        // match_RR
        -0.1527009217,       // match_NR
        -0.0287910294,       // match_DR
        -0.0372860561,       // match_CR
        0.2042655835,        // match_QR
        0.1015869904,        // match_ER
        -0.1243717721,       // match_GR
        -0.4536924078,       // match_HR
        -0.1175640130,       // match_IR
        0.0677580287,        // match_LR
        -0.1247305125,       // match_KR
        -0.1050579555,       // match_MR
        -0.3978793903,       // match_FR
        0.1263860986,        // match_PR
        0.1300308435,        // match_RS
        0.0466450150,        // match_RT
        0.1295652048,        // match_RW
        -0.0844943421,       // match_RY
        0.0776601882,        // match_RV
        0.0223221547,        // match_BR
        -0.0000170891,       // match_RZ
        -0.0423153701,       // match_RX
        0.3314324872,        // match_NN
        -0.0766789421,       // match_DN
        0.0072920597,        // match_CN
        -0.2959308166,       // match_NQ
        -0.3416146614,       // match_EN
        0.1900053288,        // match_GN
        0.1361436220,        // match_HN
        -0.0146960209,       // match_IN
        -0.1022428663,       // match_LN
        0.1165725448,        // match_KN
        -0.0237308150,       // match_MN
        -0.0039250134,       // match_FN
        -0.1466773534,       // match_NP
        0.2403854773,        // match_NS
        -0.0484809926,       // match_NT
        -0.0137568077,       // match_NW
        0.2275774736,        // match_NY
        -0.1224719644,       // match_NV
        -0.0028453899,       // match_BN
        -0.0000075814,       // match_NZ
        0.0490582550,        // match_NX
        0.6209360327,        // match_DD
        -0.1239555364,       // match_CD
        -0.1754071627,       // match_DQ
        -0.0915312262,       // match_DE
        0.0448213578,        // match_DG
        -0.3128365639,       // match_DH
        0.0296535194,        // match_DI
        -0.2133755747,       // match_DL
        0.0406703415,        // match_DK
        -0.0736360008,       // match_DM
        -0.2095756127,       // match_DF
        -0.0386802036,       // match_DP
        0.1542584716,        // match_DS
        0.0722330302,        // match_DT
        -0.0669080531,       // match_DW
        -0.1709271281,       // match_DY
        -0.1605283738,       // match_DV
        -0.0061353625,       // match_BD
        0.0000208108,        // match_DZ
        -0.0152326114,       // match_DX
        1.1291353460,        // match_CC
        -0.0075432041,       // match_CQ
        -0.2172026203,       // match_CE
        0.0444036496,        // match_CG
        0.0599751280,        // match_CH
        -0.0042372227,       // match_CI
        -0.1521454556,       // match_CL
        -0.2879063384,       // match_CK
        -0.0091165651,       // match_CM
        0.0470591712,        // match_CF
        -0.2321687652,       // match_CP
        -0.0647112521,       // match_CS
        -0.0983353080,       // match_CT
        -0.1449441858,       // match_CW
        -0.0102290517,       // match_CY
        0.2425542782,        // match_CV
        0.0336165718,        // match_BC
        0.0000129692,        // match_CZ
        -0.0036737216,       // match_CX
        0.2385869058,        // match_QQ
        -0.0630620011,       // match_EQ
        -0.1241639884,       // match_GQ
        -0.1834911464,       // match_HQ
        0.1334167656,        // match_IQ
        0.1247338541,        // match_LQ
        0.1576880362,        // match_KQ
        -0.0068343063,       // match_MQ
        0.1430706242,        // match_FQ
        -0.2039069033,       // match_PQ
        -0.0067957482,       // match_QS
        0.1106651783,        // match_QT
        -0.2282555065,       // match_QW
        0.2373025924,        // match_QY
        -0.1338959952,       // match_QV
        -0.0093084044,       // match_BQ
        0.0000125543,        // match_QZ
        -0.0312303584,       // match_QX
        0.4024146058,        // match_EE
        -0.2282306244,       // match_EG
        -0.1217334057,       // match_EH
        -0.1894179933,       // match_EI
        -0.1452360296,       // match_EL
        0.2034709309,        // match_EK
        0.3302643968,        // match_EM
        -0.1533294978,       // match_EF
        0.0672756330,        // match_EP
        0.0770325528,        // match_ES
        0.1181377760,        // match_ET
        -0.2269734438,       // match_EW
        0.0083807320,        // match_EY
        0.0691781729,        // match_EV
        -0.0067633075,       // match_BE
        0.0000196957,        // match_EZ
        -0.0423885834,       // match_EX
        1.1876605630,        // match_GG
        -0.2060691070,       // match_GH
        -0.3081700757,       // match_GI
        -0.2588556647,       // match_GL
        0.0105869319,        // match_GK
        -0.2833336536,       // match_GM
        -0.0496188395,       // match_FG
        -0.2160815418,       // match_GP
        -0.1657510057,       // match_GS
        -0.3533990482,       // match_GT
        -0.0685490161,       // match_GW
        -0.1819943150,       // match_GY
        -0.1865291287,       // match_GV
        -0.0035657136,       // match_BG
        -0.0000165408,       // match_GZ
        -0.0339119142,       // match_GX
        0.9373223169,        // match_HH
        0.0506048899,        // match_HI
        0.0964368853,        // match_HL
        -0.4543276091,       // match_HK
        -0.1705417390,       // match_HM
        0.3095134130,        // match_FH
        -0.2531252698,       // match_HP
        -0.0377279505,       // match_HS
        -0.0151458224,       // match_HT
        0.0964160680,        // match_HW
        0.1375027647,        // match_HY
        -0.1151537584,       // match_HV
        -0.0001050721,       // match_BH
        -0.0000019758,       // match_HZ
        -0.0074196895,       // match_HX
        0.4533851240,        // match_II
        0.0653399172,        // match_IL
        -0.1985617049,       // match_IK
        -0.1300052944,       // match_IM
        0.2511930032,        // match_FI
        -0.2857464011,       // match_IP
        -0.1674081073,       // match_IS
        0.1180321173,        // match_IT
        -0.1781633468,       // match_IW
        0.1333797494,        // match_IY
        0.1781386609,        // match_IV
        -0.0244162166,       // match_BI
        0.0000083067,        // match_IZ
        0.0053583913,        // match_IX
        0.2994294751,        // match_LL
        -0.0083446716,       // match_KL
        0.0515362122,        // match_LM
        0.2474176243,        // match_FL
        0.0094038104,        // match_LP
        -0.0863571594,       // match_LS
        0.0345298008,        // match_LT
        0.0548115769,        // match_LW
        -0.1152402611,       // match_LY
        -0.1706537972,       // match_LV
        -0.0008651373,       // match_BL
        -0.0000103251,       // match_LZ
        -0.0101177020,       // match_LX
        0.2475779032,        // match_KK
        0.1505065196,        // match_KM
        -0.1423960796,       // match_FK
        0.1226117039,        // match_KP
        0.0870535602,        // match_KS
        0.1147179140,        // match_KT
        -0.1808403692,       // match_KW
        -0.1752187164,       // match_KY
        -0.0765669940,       // match_KV
        -0.0418193595,       // match_BK
        0.0000054117,        // match_KZ
        -0.0208201664,       // match_KX
        0.0450841840,        // match_MM
        -0.0220633897,       // match_FM
        -0.0712793326,       // match_MP
        0.0144128962,        // match_MS
        0.0450703413,        // match_MT
        -0.1005880075,       // match_MW
        0.2289253057,        // match_MY
        -0.2601911676,       // match_MV
        -0.0001660408,       // match_BM
        0.0000027252,        // match_MZ
        0.0477737587,        // match_MX
        0.3128943161,        // match_FF
        0.0588968616,        // match_FP
        -0.0617635795,       // match_FS
        -0.1288968090,       // match_FT
        -0.2764814563,       // match_FW
        -0.0563043805,       // match_FY
        0.1686482258,        // match_FV
        -0.0000889901,       // match_BF
        0.0000189778,        // match_FZ
        0.0416020061,        // match_FX
        0.8655321661,        // match_PP
        -0.2661709636,       // match_PS
        -0.3941218572,       // match_PT
        -0.1283280412,       // match_PW
        0.0397078614,        // match_PY
        0.0023770700,        // match_PV
        -0.0023985839,       // match_BP
        -0.0000025444,       // match_PZ
        0.0067760077,        // match_PX
        0.3019582546,        // match_SS
        -0.0977834697,       // match_ST
        -0.1170340813,       // match_SW
        -0.0598968418,       // match_SY
        0.0282025075,        // match_SV
        -0.0251148879,       // match_BS
        -0.0000169434,       // match_SZ
        0.0890061899,        // match_SX
        0.3869586346,        // match_TT
        0.1745977154,        // match_TW
        -0.0509058927,       // match_TY
        0.2846486692,        // match_TV
        -0.0002607815,       // match_BT
        0.0000176921,        // match_TZ
        0.0431627708,        // match_TX
        1.1101559900,        // match_WW
        -0.1739421766,       // match_WY
        -0.3922002738,       // match_VW
        -0.0002526889,       // match_BW
        0.0000012201,        // match_WZ
        -0.0111238677,       // match_WX
        0.1088431988,        // match_YY
        -0.0787221924,       // match_VY
        -0.0003674476,       // match_BY
        0.0000103738,        // match_YZ
        0.0107461054,        // match_XY
        0.3495481549,        // match_VV
        -0.0022009270,       // match_BV
        -0.0000007801,       // match_VZ
        0.0651720892,        // match_VX
        -0.0000183828,       // match_BB
        0.0000001928,        // match_BZ
        0.0000163899,        // match_BX
        -0.0000224150,       // match_ZZ
        0.0000147116,        // match_XZ
        0.0106881962,        // match_XX
        0.3112842307,        // match_AGPSTAGPST
        -0.1471614998,       // match_AGPSTC
        0.0450610651,        // match_AGPSTDENQ
        -0.2830023449,       // match_AGPSTFWY
        -0.0661832613,       // match_AGPSTHKR
        -0.2030230944,       // match_AGPSTILMV
        -0.2396442163,       // match_CDENQ
        -0.0758695438,       // match_CFWY
        -0.1839167862,       // match_CHKR
        0.0674373128,        // match_CILMV
        0.3949250220,        // match_DENQDENQ
        -0.3366973008,       // match_DENQFWY
        0.1076221411,        // match_DENQHKR
        -0.3682259648,       // match_DENQILMV
        0.7661069502,        // match_FWYFWY
        -0.2222620732,       // match_FWYHKR
        0.1488581474,        // match_FWYILMV
        0.4447127608,        // match_HKRHKR
        -0.2553839944,       // match_HKRILMV
        0.6564768430,        // match_ILMVILMV
        -0.2142803435,       // insert_A
        -0.0512154268,       // insert_R
        -0.0013365775,       // insert_N
        0.1689986908,        // insert_D
        -0.3309988516,       // insert_C
        -0.1440213878,       // insert_Q
        0.0614170425,        // insert_E
        0.2729797320,        // insert_G
        -0.2147640991,       // insert_H
        -0.2147656645,       // insert_I
        -0.1269477815,       // insert_L
        0.1544785573,        // insert_K
        -0.0078071998,       // insert_M
        -0.2314780141,       // insert_F
        0.2352779885,        // insert_P
        -0.0271990766,       // insert_S
        -0.2520845201,       // insert_T
        -0.2498274860,       // insert_W
        -0.0948525448,       // insert_Y
        -0.2056809678,       // insert_V
        0.0322287905,        // insert_B
        -0.0000011997,       // insert_Z
        -0.0995150495,       // insert_X
        0.0702867448,        // insert_AGPST
        0.1136406665,        // insert_DENQ
        -0.3125537919,       // insert_FWY
        -0.0184512343,       // insert_HKR
        -0.3004199196,       // insert_ILMV
        -0.0815002375,       // match
        -0.0959708177,       // insert
        0.2589718220,        // insert2
        4.2313176210,        // match_to_match
        0.5994099074,        // match_to_insert
        1.5862279340,        // insert_extend
        -3.9101851590,       // insert_change
        -0.7297161806,       // match_to_insert2
        1.5063667130,        // insert2_extend
        -5.4132004140,       // insert2_change
        -0.5656060626,       // match_to_insert_hydrophilic_count_0
        -0.0459723920,       // insert_to_insert_hydrophilic_count_0
        -0.3610762626,       // match_to_insert2_hydrophilic_count_0
        0.4119923779,        // insert2_to_insert2_hydrophilic_count_0
        -0.4653930118,       // match_to_insert_hydrophilic_count_1
        0.3815250765,        // insert_to_insert_hydrophilic_count_1
        -0.9218346355,       // match_to_insert2_hydrophilic_count_1
        0.4246486436,        // insert2_to_insert2_hydrophilic_count_1
        -0.1333046863,       // match_to_insert_hydrophilic_count_2
        0.3876940473,        // insert_to_insert_hydrophilic_count_2
        -0.8561794454,       // match_to_insert2_hydrophilic_count_2
        0.4193573455,        // insert2_to_insert2_hydrophilic_count_2
        0.1924111378,        // match_to_insert_hydrophilic_count_3
        0.3141690814,        // insert_to_insert_hydrophilic_count_3
        -0.4041462013,       // match_to_insert2_hydrophilic_count_3
        0.4115690209,        // insert2_to_insert2_hydrophilic_count_3
        0.3709364961,        // match_to_insert_hydrophilic_count_4
        0.2127559485,        // insert_to_insert_hydrophilic_count_4
        0.4904060342,        // match_to_insert2_hydrophilic_count_4
        0.3700263134,        // insert2_to_insert2_hydrophilic_count_4
        0.4711998941,        // match_to_insert_hydrophilic_count_5
        0.1901888157,        // insert_to_insert_hydrophilic_count_5
        0.8756178421,        // match_to_insert2_hydrophilic_count_5
        0.3500299813,        // insert2_to_insert2_hydrophilic_count_5
        0.7462673575,        // match_to_insert_hydrophilic_count_6
        0.3086015241,        // insert_to_insert_hydrophilic_count_6
        0.5359974308,        // match_to_insert2_hydrophilic_count_6
        0.3551878635         // insert2_to_insert2_hydrophilic_count_6
    };

    return std::vector<RealT>(values, values + 362);
}


/////////////////////////////////////////////////////////////////
// GetDefaultRNAValues()
//
// Retrieve default parameter values.
/////////////////////////////////////////////////////////////////

template<class RealT>
std::vector<RealT> GetDefaultRNAValues()
{
    RealT values[] =
    {
        0.5256508867,        // match_AA
        -0.4090640200,       // match_AC
        -0.2502759109,       // match_AG
        -0.3252306723,       // match_AU
        0.6665219366,        // match_CC
        -0.3289391181,       // match_CG
        -0.1326088918,       // match_CU
        0.6684676551,        // match_GG
        -0.3565888168,       // match_GU
        0.4590520450,        // match_UU
        -0.0025219272,       // insert_A
        -0.0831389156,       // insert_C
        -0.0744397065,       // insert_G
        -0.0129005460,       // insert_U
        0.3959924457,        // match
        -0.4431756229,       // insert
        -0.3488104904,       // insert2
        2.5057567100,        // match_to_match
        -1.2423961130,       // match_to_insert
        1.8676346730,        // insert_extend
        -6.9696754440,       // insert_change
        0.1970448791,        // match_to_insert2
        1.0140265830,        // insert2_extend
        -7.3469687820        // insert2_change
    };

    return std::vector<RealT>(values, values + 24);
}


}
